package com.huikeportal.dao;

import java.util.HashMap;
import java.util.List;

import com.huikeportal.model.AllIndexModel;
import com.huikeportal.model.IndexOrderModel;
import com.huikeportal.model.PrivilegeUsersSite;
import com.huikeportal.model.RankingData;
import com.huikeportal.model.ReportGraphData;
import com.huikeportal.model.ReportSiteDay;
import com.huikeportal.model.SiteAllInfo;
import com.huikeportal.model.SiteRelation;
import com.huikeportal.model.UserInfo;
import com.huikeportal.model.WordBook;

public interface FootfallGlobalMapper {


    ReportSiteDay selectByPrimaryKey(Integer id);
    
    /**集团全部广场获取小时折线图报表*/
    List<ReportGraphData> selectGraphDataHourJituanAll(HashMap<String, Object> map);
    
    /**集团全部广场获取日折线图报表*/
    List<ReportGraphData> selectGraphDataDayJituanAll(HashMap<String, Object> map);
    
    /**集团全部广场获取周线图报表*/
    List<ReportGraphData> selectGraphDataWeekJituanAll(HashMap<String, Object> map);
    
    /**集团全部广场获取月折线图报表*/
    List<ReportGraphData> selectGraphDataMonthJituanAll(HashMap<String, Object> map);
    
    /**集团全部广场获取年折线图报表*/
    List<ReportGraphData> selectGraphDataYearJituanAll(HashMap<String, Object> map);
    
    
    /**获取小时折线图报表*/
    List<ReportGraphData> selectGraphDataHour(HashMap<String, Object> map);
    
    /**获取日折线图报表*/
    List<ReportGraphData> selectGraphDataDay(HashMap<String, Object> map);
    
    /**获取周线图报表*/
    List<ReportGraphData> selectGraphDataWeek(HashMap<String, Object> map);
    
    /**获取月折线图报表*/
    List<ReportGraphData> selectGraphDataMonth(HashMap<String, Object> map);
    
    /**获取年折线图报表*/
    List<ReportGraphData> selectGraphDataYear(HashMap<String, Object> map);
    
    /**获取小时折线图报表*/
    List<ReportGraphData> selectPartGraphDataHour(HashMap<String, Object> map);
    
    /**获取日折线图报表*/
    List<ReportGraphData> selectPartGraphDataDay(HashMap<String, Object> map);
    
    /**获取周线图报表*/
    List<ReportGraphData> selectPartGraphDataWeek(HashMap<String, Object> map);
    
    /**获取月折线图报表*/
    List<ReportGraphData> selectPartGraphDataMonth(HashMap<String, Object> map);
    
    /**获取年折线图报表*/
    List<ReportGraphData> selectPartGraphDataYear(HashMap<String, Object> map);
    
    /**获取小时场所排行报表*/
    List<RankingData> selectRankingDataHour(HashMap<String, Object> map);
    
    /**获取日场所排行报表*/
    List<RankingData> selectRankingDataDay(HashMap<String, Object> map);
    
    /**获取周场所排行报表*/
    List<RankingData> selectRankingDataWeek(HashMap<String, Object> map);
    
    /**获取月场所排行报表*/
    List<RankingData> selectRankingDataMonth(HashMap<String, Object> map);
    
    /**获取年场所排行报表*/
    List<RankingData> selectRankingDataYear(HashMap<String, Object> map);
    
    /**获取下级场所*/
    List<SiteRelation> getLowerSite(HashMap<String, Object> map);
    
    List<ReportSiteDay> selectTableByCondition(HashMap<String, Object> map);
    
    ReportSiteDay selecTodayTotal(SiteAllInfo siteAllInfo);
    
    /**根据用户信息获取用户的所有场所*/
    List<PrivilegeUsersSite> selectUsersSiteByUser(UserInfo userInfo);
    
  /**根据用户的场所信息获取场所关系*/
    SiteRelation  selectSiteRelationByUsersSite(PrivilegeUsersSite privilegeUsersSite);
    
    /**根据sitekey获取场所关系*/
    SiteRelation selectSiteRelationByChildId(String sitekey);
    
  /**根据场所关系信息用户的场所*/
    SiteAllInfo selectSiteAllInfoBySiteRelation(SiteRelation siteRelation);
    
    /**根据用户场所获取场所信息*/
    SiteAllInfo selectSiteAllInfoByUsersSite(PrivilegeUsersSite privilegeUsersSite);
    /**依据场所id查询场所信息*/
    SiteAllInfo selectSiteAllInfoById(String parentid);
    
    /**查询集团下面所有场所*/
    List<SiteAllInfo> selectSiteAllInforByparentId(String siteId);
    /**根据用户查询用户有权限的指标*/
    List<WordBook> selectUserIndex(UserInfo UserInfo);
    
    /**根据用户查询用户有权限的指标*/
    List<WordBook> selectUserIndexV1(UserInfo UserInfo);
    
    /**查询所有指标及其组别*/
    List<AllIndexModel> getIndexListOfGroup();
    
    /**查询指标组别*/
    List<AllIndexModel> getIndexGroupInfo();
    
    /**查询指标*/
    List<AllIndexModel> getIndexInfo();
    
    /**
     * 查询指标顺序
     * @return
     */
    List<IndexOrderModel>  getIndexOrder();
    
    
    /**
     * 获取场所指标的最大值
     * @param map
     * @return
     */
    ReportGraphData selectMaxSitesData(HashMap<String, Object> map);

}
